package com.bjb.vr.common.utils;

import cn.hutool.core.util.HexUtil;
import cn.hutool.crypto.SecureUtil;
import com.bjb.vr.common.constant.EncryptConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

/**
 * @author hujingbo
 * @version 1.0.0
 * @Description 数据加密工具类
 * @createTime 2022年03月04日 14:48
 */
@Slf4j
public class EncryptUtil {

    private static final byte[] KEY_BYTES;

    static {
        KEY_BYTES = new byte[16];
        int i = 0;
        for (byte b : EncryptConstant.ENCRYPT_KEY.getBytes()) {
            KEY_BYTES[i++ % 16] ^= b;
        }
    }

    /**
     * 加密
     *
     * @param content
     * @return
     */
    public static String encrypt(String content) {
        if (StringUtils.isBlank(content)) {
            return content;
        }
        return HexUtil.encodeHexStr(SecureUtil.aes(KEY_BYTES).encrypt(content), false);
    }

    /**
     * 解密
     *
     * @param content
     * @return
     */
    public static String decrypt(String content) {
        if (StringUtils.isBlank(content)) {
            return content;
        }
        return SecureUtil.aes(KEY_BYTES).decryptStr(content);
    }

    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        String encrypted = encrypt("Hello World");
        System.out.println(encrypted);

        String decrypted = decrypt(encrypted);
        System.out.println(decrypted);
    }

}
